package juc.completablefuture.methods.dependencyrelationship;

/**
 * @ClassName ThenApplyExample
 * @PackageName completablefuture
 * @projectName myThread
 * @Description 
 * @Author games
 * @Date 2025/8/27 下午4:12
 * @Version 1.0
 */

import java.util.concurrent.CompletableFuture;

/**
 * 作用：把前面异步任务的结果，交给后面的 Function 处理。
 * 返回值：一个新的 CompletableFuture，其结果是 Function 的输出。
 */
public class ThenApplyExample {

    public static void main(String[] args) {
        // 创建CompletableFuture实例，使用supplyAsync异步执行任务
        // supplyAsync会返回一个Future，并且会立即开始执行任务
        CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> "Hello")
                // thenApply会接收上一步的结果进行处理，并返回新的CompletableFuture
                // 这里将"Hello"与" World"拼接
                .thenApply(s -> s + " World");

                // thenAccept会接收最终结果，但不会返回新的CompletableFuture
                // 这里使用方法引用将结果输出到控制台
                cf.thenAccept(System.out::println); // 输出: Hello World
    }
}
